
package pe.edu.pucp.Maestros.Controlador;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import pe.edu.pucp.Maestros.Controlador.CargaXML.AeropuertoXmlControlador;
import pe.edu.pucp.Maestros.Controlador.CargaXML.PasswordControlador;
import pe.edu.pucp.Maestros.Controlador.CargaXML.UsuarioXMLControlador;
import pe.edu.pucp.Maestros.DAO.AeropuertoXmlDAO;
import pe.edu.pucp.Maestros.DAO.PasswordDAO;
import pe.edu.pucp.Maestros.DAO.UsuarioXMLDAO;
import pe.edu.pucp.Maestros.Vista.CargaXMLGUI;
import pe.edu.pucp.Modelo.Permiso;
import pe.edu.pucp.Modelo.Usuario;
/**
 *
 * @author oscar
 */
public class DatosInicialesControlador {
    private CargaXMLGUI view;
    private AeropuertoXmlControlador aeropuerto;
    private PasswordControlador password;
    private UsuarioXMLControlador usuario;
    private Usuario usr;
    
    public DatosInicialesControlador(CargaXMLGUI v, Usuario user) {
//        this.m = dao;
        this.view = v;  
        this.usr = user;
        view.mostrarPermisos(new  ArrayList<Permiso>(user.getPerfil().getPermisos())); 
        
        view.addCargarDatosInicialesListener(new CargarButtonListener());
        view.addBuscarDatosInicialesListener(new AbrirFile());
    }
    
    
    public int CarpetaCorrecta(String direccion){
            File dir = new File(direccion);
            if(!dir.isDirectory()){
                return 0;
            }
            
            String[] ficheros = dir.list();
            int numarchivos = ficheros.length;            
            int b = 0;
            for (int a=0;a<numarchivos;a++){
                if (ficheros[a].equals("AEROPUERTO.xml")){
                    b++;
                    break;
                }

            }
            for (int a=0;a<numarchivos;a++){            
                if (ficheros[a].equals("PASSWORD.xml")){
                    b++;
                    break;
                }

            }

            for (int a=0;a<numarchivos;a++){            
                if (ficheros[a].equals("USUARIO.xml")){
                    b++;
                    break;
                }
            }
            return b;     
    }
    
    
    
    class AbrirFile implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
        JFileChooser filechooser = new JFileChooser();
        filechooser.setDialogTitle("Escoger carpeta");
         filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = filechooser.showOpenDialog(null); 
        if (result == JFileChooser.APPROVE_OPTION){
            File f = filechooser.getSelectedFile();            
            if (CarpetaCorrecta(f.getPath()) == 3) {  
                view.setNombreArchivoDatosIniciales(f.getPath());
            }
            else{
                view.mostrarError("No se encuentran los archivos necesarios en la carpeta");
                view.setNombreArchivoDatosIniciales("");
            }
        }         
        }     
    }
    
    
    class CargarButtonListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(view.getNombreArchivoDatosIniciales().equals("")){
                view.setNombreArchivoDatosIniciales("");
                view.mostrarError("Escoja una carpeta para cargar los datos");
            }
            else{
                aeropuerto = new AeropuertoXmlControlador(new AeropuertoXmlDAO(),view);
                aeropuerto.CargarPrueba(usr);
                
                usuario = new UsuarioXMLControlador(new UsuarioXMLDAO(), view);
                usuario.CargarPrueba(usr);
                
                password = new PasswordControlador(new PasswordDAO(), view);
                password.CargarPrueba();
                
                view.setNombreArchivoDatosIniciales("");
                view.mostrarConformidad("Datos Iniciales Cargados");

                view.getbtnAbrirDInicial().setEnabled(false);
                view.getbtnCargarDInicial().setEnabled(false);
                view.getbtnAbrirDVuelo().setEnabled(true);
                view.getbtnCargarDVuelo().setEnabled(true);
                view.getbtnAbrirDSimulacion().setEnabled(false);
                view.getbtnCargarDSimulacion().setEnabled(false);
                         
            }   
        }
    }
}
